home *** CD-ROM | disk | FTP | other *** search
/ MACup: Giveaway 1996 / Image.iso / Shareware & Demos / Web-Publishing / SNAP PrimeBase / PrimeBase™ Server PPC / Setup / Scripts / reorgall.dall < prev    next >
Encoding:
Text File  |  1996-07-13  |  2.2 KB  |  85 lines  |  [TEXT/ds30]

  1. declare procedure sysreorg(dbname, owner, tname)
  2. argument objname dbname, owner = "System", tname;
  3. {
  4.     cursor CntCur;
  5.     integer BeforeCnt, AfterCnt;
  6.     varchar string;
  7.  
  8.     string = "select count(*) Cnt from " + dbname + "!" + owner + "." + tname + " into CntCur;";
  9.     execute string;
  10.     fetch of CntCur;
  11.     BeforeCnt = CntCur->Cnt;
  12.     
  13.     print "Reorganizing " + varchar BeforeCnt + " row/s of " + tname + "...";
  14.     execute "reorg table " + dbname + "!" + owner + "." + tname + ";";
  15.  
  16.     execute string;
  17.     fetch of CntCur;
  18.     AfterCnt = CntCur->Cnt;
  19.     if (BeforeCnt != AfterCnt)
  20.         print BeforeCnt - AfterCnt, "rows lost!";
  21. }
  22. end procedure sysreorg;
  23.  
  24. declare procedure reorgall(db)
  25. argument varchar db = $null;
  26. {
  27.     cursor dbs, tabs;
  28.     varchar fullname;
  29.     objname dbname;
  30.     integer BeforeCnt, AfterCnt;
  31.     
  32.     if (db is not null)
  33.         db = $toupper(db);
  34.     
  35.     describe open databases into dbs;
  36.     for each dbs
  37.     {
  38.         dbname = dbs->alias;
  39.         close database :dbname;
  40.     }
  41.     describe databases into dbs;
  42.     for each dbs
  43.     {
  44.         if (db is not null and db != $toupper(dbs->name))
  45.             continue;
  46.         fullname = dbs->name;
  47.         print "Reorganizing system tables of database " + fullname + ".";
  48.         open database :fullname;
  49.         sysreorg(dbs->name,, "SysUsers");
  50.         sysreorg(dbs->name,, "SysMembers");
  51.         sysreorg(dbs->name,, "SysDataTypes");
  52.         sysreorg(dbs->name,, "SysObjects");
  53.         sysreorg(dbs->name,, "SysDomains");
  54.         sysreorg(dbs->name,, "SysDomainComps");
  55.         sysreorg(dbs->name,, "SysTables");
  56.         sysreorg(dbs->name,, "SysColumns");
  57.         sysreorg(dbs->name,, "SysColumnComps");
  58.         sysreorg(dbs->name,, "SysKeys");
  59.         sysreorg(dbs->name,, "SysReferences");
  60.         sysreorg(dbs->name,, "SysDefaults");
  61.         sysreorg(dbs->name,, "SysRules");
  62.         sysreorg(dbs->name,, "SysViews");
  63.         sysreorg(dbs->name,, "SysIndices");
  64.         sysreorg(dbs->name,, "SysIndexComps");
  65.         sysreorg(dbs->name,, "SysVariables");
  66.         sysreorg(dbs->name,, "SysPrivileges");
  67.         sysreorg(dbs->name,, "SysColumnPrivs"); 
  68.  
  69.         describe tables into tabs;
  70.         if ($rows(tabs) > 0)
  71.             print "Reorganizing user tables of database " + fullname + ".";
  72.         for each tabs
  73.         {
  74.             sysreorg(dbs->name, tabs->owner, tabs->name); 
  75.         }
  76.         dbname = dbs->name;
  77.         close database :dbname;
  78.     }
  79. }
  80. end procedure reorgall;
  81.  
  82. print 'Enter: reorgall("<dbname>");';
  83. print 'to reorganize a database called <dbname>.';
  84.  
  85.